using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

/// <summary>
/// CSV 文件控制器，支持读取和写入 CSV 文件
/// - 读取 CSV 文件并返回数据列表
/// - 写入 CSV 数据到文件
/// </summary>
public class CSVFileController_20250324 : MonoBehaviour
{
    [Header("CSV 文件路径")]
    public string filePath = Application.streamingAssetsPath + "/Data.csv"; // 示例路径

    private char separator = ','; // CSV 分隔符，可修改为 '\t'（TSV 文件）

    private void Start()
    {
        // 写入新的 CSV 数据
        List<string[]> newData = new List<string[]>()
        {
            new string[] { "Name", "Score", "Level" },
            new string[] { "Alice", "1200", "5" },
            new string[] { "Bob", "950", "3" }
        };
        //WriteCSVFile(newData, filePath);

        // 读取 CSV 文件
        List<string[]> data = ReadCSVFile(filePath);
        foreach (var row in data)
        {
            Debug.Log(string.Join(" | ", row)); // 输出 CSV 内容
        }
    }

    /// <summary>
    /// 读取 CSV 文件并返回数据列表
    /// </summary>
    public List<string[]> ReadCSVFile(string filePath)
    {
        List<string[]> csvData = new List<string[]>();

        if (File.Exists(filePath))
        {
            using (StreamReader reader = new StreamReader(filePath))
            {
                while (!reader.EndOfStream)
                {
                    string line = reader.ReadLine();

                    // 跳过空行
                    if (string.IsNullOrWhiteSpace(line) || line.Trim(separator).Length == 0)
                    {
                        continue;
                    }

                    // 解析 CSV 行数据
                    string[] values = line.Split(separator);
                    csvData.Add(values);
                }
            }
            Debug.Log("CSV 文件读取成功: " + filePath);
        }
        else
        {
            Debug.LogError("CSV 文件未找到: " + filePath);
        }

        return csvData;
    }

    /// <summary>
    /// 写入 CSV 数据到文件
    /// </summary>
    public void WriteCSVFile(List<string[]> csvData, string filePath)
    {
        using (StreamWriter writer = new StreamWriter(filePath))
        {
            foreach (string[] row in csvData)
            {
                string line = string.Join(separator.ToString(), row);
                writer.WriteLine(line);
            }
        }

        Debug.Log("CSV 文件写入成功: " + filePath);
    }
}
